/**
 * 用户管理页面接口
 */
import request from '@/utils/request';

export interface ICreateUserParams {
  id?: number;
  /** 姓名 */
  name: string;
  /** 手机号 */
  phone: string;
  /** 角色ID */
  roleIds: number[];
  /** 项目ID */
  orgId: number;
}

export interface IUserListQueryParams {
  /** 页数 */
  pageNum?: number;
  /** 每页数量 */
  pageSize?: number;
  /** 姓名或手机号 */
  nameLike: string;
  /** 手机号 */
  phoneLike: string;
  /** 项目ID */
  organizationId: number;
  /** 状态 */
  status: number;
}

export interface IUserListItem {
  id: number;
  /** 姓名 */
  name: string;
  /** 手机号 */
  phone: string;
  /** userCode */
  userCode: string;
  /** 用户状态 */
  status: number;
  /** 角色名称数组 */
  roles: Array<string>;
  /** 角色Id数组 */
  roleIds: Array<number>;
  /** 项目名称 */
  organization: string;
  /** 项目ID */
  orgId: number;
}

export interface IDepartmentItem {
  /** 项目名称 */
  name: string;
  /** 项目id */
  id: number;
}

export interface IRoleItem {
  /** 角色ID */
  id: number;
  /** 角色名称 */
  roleName: null;
}

/**
 * 获取用户数据列表
 *
 * 接口地址：http://yapi.ii-ai.tech/project/341/interface/api/8971
 */
export async function fetchListAsync({
  pageNum,
  pageSize,
  ...restParams
}: IUserListQueryParams): Promise<any> {
  return request(`/user/admin/user/admin/vo/page/v2`, {
    method: 'POST',
    data: {
      currentPage: pageNum,
      pageSize,
      ...restParams,
    },
  });
}

/**
 * 创建用户
 *
 * 接口地址：hhttp://yapi.ii-ai.tech/project/341/interface/api/8972
 */
export async function createItemAsync(params: ICreateUserParams): Promise<any> {
  return request('/user/admin/user/admin/create', {
    method: 'POST',
    data: params,
  });
}

/**
 * 启用/禁用用户
 *
 * 接口地址：http://yapi.ii-ai.tech/project/341/interface/api/8969
 */
export async function enableItemAsync(userCode: number): Promise<any> {
  return request(`/user/admin/user/admin/endisable/${userCode}`);
}

/**
 * 更新用户
 *
 * 接口地址：http://yapi.ii-ai.tech/project/341/interface/api/8962
 */
export async function updateItemAsync(params: Partial<ICreateUserParams>): Promise<any> {
  return request('/user/admin/user/admin/update', {
    method: 'POST',
    data: params,
  });
}

/**
 * 删除用户
 *
 * 接口地址：http://yapi.ii-ai.tech/project/341/interface/api/8973
 *
 */
export async function deleteItemAsync(userCode: number): Promise<any> {
  return request(`/user/admin/user/admin/delete/${userCode}`);
}

/**
 * 获取所属项目筛选项
 *
 * 接口地址：无，嘴遁。
 *
 */
export async function fetchFilterOptsAsync(): Promise<any> {
  return request(`/user/admin/sys/organization/query`, {
    method: 'POST',
  });
}

/**
 * 查询角色
 *
 * 接口地址：http://yapi.ii-ai.tech/project/341/interface/api/8978
 *
 */
export async function fetchRolesAsync(): Promise<any> {
  return request(`/user/admin/sys/role/query`, {
    method: 'POST',
    data: {},
  });
}
